/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package credit.paysystem;

import Modelo.Detallemovimiento;
import Modelo.Movimiento;
import Modelo.Productos;
import Modelo.Tipomovimiento;
import Modelo.Usuario;
import java.math.BigDecimal;
import java.net.URL;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.ResourceBundle;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Button;
import javafx.scene.control.ComboBox;
import javafx.scene.control.Label;
import javafx.scene.control.MenuButton;
import javafx.scene.control.PasswordField;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.TextField;
import javafx.scene.control.TitledPane;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.image.ImageView;
import javafx.scene.layout.AnchorPane;
import javax.swing.JOptionPane;
import mx.its.LnLocal.DetalleMovimientoLnLocal;
import mx.its.LnLocal.MovimientoLnLocal;
import mx.its.LnLocal.ProductosLnLocal;
import mx.its.LnLocal.TipoMovimientoLnLocal;
import mx.its.LnLocal.UsuarioLnLocal;
import mx.its.ln.DetallemovimientoLN;
import mx.its.ln.MovimientoLN;
import mx.its.ln.ProductosLN;
import mx.its.ln.TipoMovimientoLN;
import mx.its.ln.UsuarioLN;

/**
 * FXML Controller class
 *
 * @author Grnmnd
 */
public class MovimientosController implements Initializable {

    @FXML
    AnchorPane VentanaMovimientos;
    @FXML
    MenuButton botonmenu;
    @FXML
    Button eliminar;
    @FXML
    Button AddProducto;
    @FXML
    TextField criterioBusqueda;
    @FXML
    Label Movimientos;
    @FXML
    Label accionLabel;
    @FXML
    Label EtiquetaNombre;
    @FXML
    TableView TablaMovimientos;
    @FXML
    TableView TablaDetalles;
    @FXML
    TitledPane Internal;
    @FXML
    TextField CampoId;
    @FXML
    Label Encabezado;
    @FXML
    Button Agregar;
    @FXML
    Button Guardar;
    @FXML
    Button removeline;
    @FXML
    TextField CampoCantidad;
    @FXML
    Label cantidadlabel;
    @FXML
    TextField CampoNombre;
    @FXML
    TextField CampoNoControl;
    @FXML
    TextField CampoCarrera;
    @FXML
    TextField CampoSaldo;
    @FXML
    TextField CampoSaldoFuturo;
    @FXML
    TextField CampoTotal;
    @FXML
    ImageView foto;
    @FXML
    ComboBox comboProductos;
    @FXML
    TitledPane InternalAutorizar;
    @FXML
    PasswordField CampoPass;
    @FXML
    TextField nocontrol2;
    @FXML
    TextField nombre2;
    @FXML
    TextField carrera2;
    @FXML
    TextField CampoSaldo2;
    @FXML
    Label transA;
    @FXML
    Label noctrl2;
    @FXML
    Label name2;
    @FXML
    Label carrer2;
    @FXML
    Label saldo2;
    static Usuario Autoriza;
    Movimiento cs ;
    Tipomovimiento tipomovimiento ;
    Usuario s ;
    Usuario s2 ;
    Productos p;
    static int x = 0;
    private double mtotal;
    private List<Detallemovimiento> listaDVen;

    @FXML
    public void actualizarLsita() {

        TableColumn ID = new TableColumn("ID");
        ID.setCellValueFactory(
                new PropertyValueFactory<Movimiento, String>("id"));

        TableColumn Nombre = new TableColumn("Folio");
        Nombre.setCellValueFactory(
                new PropertyValueFactory<Movimiento, String>("folio"));
        Nombre.setPrefWidth(200);
        TableColumn Fecha = new TableColumn("Fecha");
        Fecha.setCellValueFactory(
                new PropertyValueFactory<Movimiento, String>("fecha"));
        Fecha.setPrefWidth(200);
        TableColumn Hora = new TableColumn("Hora");
        Hora.setCellValueFactory(
                new PropertyValueFactory<Movimiento, String>("hora"));
        Hora.setPrefWidth(200);
        TableColumn Monto = new TableColumn("Monto");
        Monto.setCellValueFactory(
                new PropertyValueFactory<Movimiento, String>("monto"));
        Monto.setPrefWidth(200);


        MovimientoLnLocal tipomovln = new MovimientoLN();

        List<Movimiento> lst = new ArrayList<>();

        for (Movimiento c : tipomovln.getList()) {
            lst.add(c);
        }

        ObservableList<Movimiento> k = FXCollections.observableArrayList(lst);
        TablaMovimientos.setItems(k);

        TablaMovimientos.getColumns().setAll(ID, Fecha, Hora, Monto);


    }

    @FXML
    public void Agregar() {
        try {
            switch (tipomovimiento.getId()) {
                case 1://PAGO
                    if (!CampoNombre.getText().isEmpty()) {
                        if (!listaDVen.isEmpty()) {
                            Internal.setVisible(false);
                            InternalAutorizar.setVisible(true);
                            EtiquetaNombre.setText(s.getNombre() + " " + s.getAPaterno() + " " + s.getAMaterno());
                        } else {
                            JOptionPane.showMessageDialog(null, "Agregar Productos a vender");
                        }
                    } else {
                        JOptionPane.showMessageDialog(null, "No Control Invalido");
                    }
                    break;
                case 3://ABONO

                    if (!CampoNombre.getText().isEmpty()) {
                        if (!Autoriza.getNoControl().equals(s.getNoControl())) {
                            if (!CampoTotal.getText().isEmpty() && Double.parseDouble(CampoTotal.getText()) > 0) {
                                Internal.setVisible(false);
                                InternalAutorizar.setVisible(true);
                                EtiquetaNombre.setText(Autoriza.getNombre() + " " + Autoriza.getAPaterno() + " " + Autoriza.getAMaterno());
                            } else {
                                JOptionPane.showMessageDialog(null, "Monto invalido");
                            }
                        } else {
                            JOptionPane.showMessageDialog(null, "Usuario Invalido \n ¡¡no puedes autorizar tu mismo tu deposito!!");
                        }
                    } else {
                        JOptionPane.showMessageDialog(null, "Usuario Invalido");
                    }

                    break;
                case 5://TRANSFERENCIA
                    if (!CampoNombre.getText().isEmpty()) {
                        if (!nombre2.getText().isEmpty() && !CampoNoControl.getText().equals(nocontrol2.getText())) {
                            if (!CampoTotal.getText().isEmpty() && Double.parseDouble(CampoTotal.getText()) > 0 && Double.parseDouble(CampoTotal.getText()) <= Double.parseDouble(CampoSaldo.getText())) {
                                Internal.setVisible(false);
                                InternalAutorizar.setVisible(true);
                                EtiquetaNombre.setText(s.getNombre() + " " + s.getAPaterno() + " " + s.getAMaterno());

                            } else {
                                JOptionPane.showMessageDialog(null, "Monto invalido");
                            }
                        } else {
                            JOptionPane.showMessageDialog(null, "Receptor Invalido");
                        }
                    } else {
                        JOptionPane.showMessageDialog(null, "Emisor Invalido");
                    }

                    break;
            }
        } catch (Exception ep) {
            System.out.println(ep);
        }
    }

    @FXML
    public void cancelarLinea() {
        try {
            System.out.println(TablaDetalles.getSelectionModel().getSelectedIndex());
            System.out.println(listaDVen.size());
            listaDVen.remove(TablaDetalles.getSelectionModel().getSelectedIndex());
            //calcular totales
            mtotal = 0;
            for (Detallemovimiento detallemovimiento : listaDVen) {
                mtotal += Double.parseDouble(detallemovimiento.getTotalLinea() + "");
            }


            if (mtotal > s.getSaldo().floatValue()) {
                JOptionPane.showMessageDialog(null, "SALDO INSUFICIENTE");
            } else {
                double saldo = ((s.getSaldo()).floatValue()) - (mtotal);

                CampoTotal.setText(mtotal + "");
                if (saldo <= 0) {
                    CampoSaldoFuturo.setText("Saldo agotado");
                } else {
                    CampoSaldoFuturo.setText(saldo + "");
                }
            }
            //calcular totales
            actulizarTablaDetaVenta();
        } catch (Exception f) {
            System.out.println(f);
        }
    }

    @FXML
    public void addLinea() {
        System.out.println("AddLinea");
        if (!CampoNombre.getText().isEmpty()) {
            if (!CampoCantidad.getText().isEmpty() && Integer.parseInt(CampoCantidad.getText()) > 0) {
                if (comboProductos.getSelectionModel().getSelectedItem() != null) {
                    Detallemovimiento d = new Detallemovimiento();
                    d.setMovimientoId(cs);
                    d.setCantidad(Integer.parseInt(CampoCantidad.getText()));
                    p = (Productos) comboProductos.getSelectionModel().getSelectedItem();
                    d.setDescripcion(p.getNombre());
                    d.setPrecio(p.getPrecio());
                    double to = d.getCantidad() * Double.parseDouble(d.getPrecio() + "");
                    System.out.println(to);
                    d.setTotalLinea(BigDecimal.valueOf(to));


                    mtotal = 0;
                    for (Detallemovimiento detallemovimiento : listaDVen) {
                        mtotal += Double.parseDouble(detallemovimiento.getTotalLinea() + "");
                    }

                    mtotal = mtotal + (d.getCantidad() * Double.parseDouble(d.getPrecio() + ""));

                    if (mtotal > s.getSaldo().floatValue()) {
                        JOptionPane.showMessageDialog(null, "SALDO INSUFICIENTE");
                        //interPanelError.setVisible(true);
                    } else {
                        listaDVen.add(d);
                        double saldo = ((s.getSaldo()).floatValue()) - (mtotal);

                        CampoTotal.setText(mtotal + "");
                        if (saldo <= 0) {
                            CampoSaldoFuturo.setText("Saldo agotado");
                        } else {
                            CampoSaldoFuturo.setText(saldo + "");
                        }
                    }

                    actulizarTablaDetaVenta();
                } else {
                    JOptionPane.showMessageDialog(null, "Seleccione un producto");
                }
            } else {
                JOptionPane.showMessageDialog(null, "Cantidad invalida");
            }
        } else {
            JOptionPane.showMessageDialog(null, "No Control Invalido");
        }
    }

    @FXML
    public void comboProductos() {
        ProductosLnLocal productosLnLocal = new ProductosLN();
        ObservableList<Productos> k = FXCollections.observableArrayList();
        for (Productos produ : productosLnLocal.getList()) {
            k.add(produ);
        }
        comboProductos.setItems(k);
    }

    @FXML
    public void NoControl() {

        try {
            UsuarioLnLocal usuarioLN = new UsuarioLN();
            System.out.println("uno" + s);
            s = usuarioLN.getPorNoControl(CampoNoControl.getText());
            System.out.println("dos" + s);
            if (s != null) {
                CampoNombre.setText(s.getNombre() + " " + s.getAPaterno());
                CampoCarrera.setText(s.getIdCarrera() + "");
                CampoSaldo.setText(s.getSaldo() + "");
                switch (tipomovimiento.getId()) {
                    case 1:
                        CampoCantidad.requestFocus();
                        break;
                    case 3:
                        CampoTotal.requestFocus();
                        break;
                    case 5:
                        nocontrol2.requestFocus();
                        break;
                }

            } else {
                CampoNombre.setText("");
                CampoCarrera.setText("");
                CampoSaldo.setText("");
                CampoNoControl.requestFocus();
            }
        } catch (Exception o) {
            System.out.println(o);
        }

    }

    @FXML
    public void den() {
        try {
            if (tipomovimiento.getId() == 3) {
                if (Double.parseDouble(CampoTotal.getText()) > 0
                        && Double.parseDouble(CampoTotal.getText()) <= Double.parseDouble(CampoSaldo.getText())) {
                    CampoSaldoFuturo.setText(Double.parseDouble(CampoSaldo.getText())
                            + Double.parseDouble(CampoTotal.getText()) + "");
                    System.out.println("Calcule " + CampoSaldoFuturo.getText());
                } else {
                }
            } else {
                if (Double.parseDouble(CampoTotal.getText()) > 0
                        && Double.parseDouble(CampoTotal.getText()) <= Double.parseDouble(CampoSaldo.getText())) {
                    CampoSaldoFuturo.setText(Double.parseDouble(CampoSaldo.getText())
                            - Double.parseDouble(CampoTotal.getText()) + "");
                    System.out.println("Calcule " + CampoSaldoFuturo.getText());
                } else {
                }
            }
        } catch (Exception mi) {
            System.out.println(mi);
        }
    }

    @FXML
    public void NoControl2() {
        UsuarioLnLocal usuarioLN = new UsuarioLN();
        s2 = usuarioLN.getPorNoControl(nocontrol2.getText());
        if (s2 != null) {
            nombre2.setText(s2.getNombre() + " " + s2.getAPaterno());
            carrera2.setText(s2.getIdCarrera() + "");
            CampoSaldo2.setText(s2.getSaldo() + "");
            CampoTotal.requestFocus();
        } else {
            nombre2.setText("");
            carrera2.setText("");
            CampoSaldo2.setText("");
            nocontrol2.requestFocus();
        }
    }

    @FXML
    public void Autorizar() {


        UsuarioLnLocal usuarioLnLocal = new UsuarioLN();
        MovimientoLnLocal mll = new MovimientoLN();
        switch (tipomovimiento.getId()) {
            case 1:
                if (CampoPass.getText().equals(s.getContrasenia())) {
                    System.out.println("Agregar.....");
                    DetalleMovimientoLnLocal dmll = new DetallemovimientoLN();


                    cs = new Movimiento();
                    if (mll.getList().isEmpty()) {
                        cs.setFolio("1");
                    } else {
                        System.out.println(mll.getList().size());
                        Movimiento nm = mll.getPorId(mll.getList().size());
                        System.out.println(nm);
                        cs.setFolio((nm.getId() + 1) + "");
                    }
                    cs.setDescripcion("" + Encabezado.getText());
                    Date d = new Date();
                    cs.setFecha(d);
                    cs.setHora(d);
                    cs.setMonto(BigDecimal.valueOf(Double.parseDouble(CampoTotal.getText())));
                    cs.setAutorizo(Autoriza.getId());
                    cs.setIdTipoMovimiento(tipomovimiento);
                    cs.setIdUsuario(s);
                    s.setSaldo(BigDecimal.valueOf(s.getSaldo().doubleValue() - Double.parseDouble(CampoTotal.getText())));
                    usuarioLnLocal.editar(s);
                    mll.registrar(cs);
                    for (Detallemovimiento detallemovimiento : listaDVen) {
                        System.out.println(detallemovimiento);
                        detallemovimiento.setMovimientoId(cs);
                        dmll.registrar(detallemovimiento);
                    }
                    int x = JOptionPane.showConfirmDialog(null, "REGISTRO COMPLETO \n ¿¿desea realizar otro Pago??");
                    Cancelar();
                    if (x != 0) {
                        Cancelar();
                    } else {
                        Nuevo();
                    }
                } else {
                    JOptionPane.showMessageDialog(null, "CONTRASEÑA INCORRECTA");
                }

                break;


            case 3://DEPOSITO


                if (CampoPass.getText().equals(Autoriza.getContrasenia())) {
                    cs = new Movimiento();
                    s.setSaldo(BigDecimal.valueOf(s.getSaldo().doubleValue() + Double.parseDouble(CampoTotal.getText())));
                    usuarioLnLocal.editar(s);
                    if (mll.getList().isEmpty()) {
                        cs.setFolio("1");
                    } else {
                        System.out.println(mll.getList().size());
                        Movimiento nm = mll.getPorId(mll.getList().size());
                        System.out.println(nm);
                        cs.setFolio((nm.getId() + 1) + "");
                    }
                    cs.setDescripcion(Encabezado.getText());
                    Date ada = new Date();
                    cs.setFecha(ada);
                    cs.setHora(ada);
                    cs.setMonto(BigDecimal.valueOf(Double.parseDouble(CampoTotal.getText())));
                    cs.setAutorizo(Autoriza.getId());
                    cs.setIdTipoMovimiento(tipomovimiento);
                    cs.setIdUsuario(s);
                    mll.registrar(cs);
                    int xl = JOptionPane.showConfirmDialog(null, "REGISTRO COMPLETO \n ¿¿desea realizar otra Recarga??");
                    Cancelar();
                    if (xl == 0) {
                        Recarga();
                    }
                }
                break;


            case 5://TRANFERENCIA
                if (CampoPass.getText().equals(s.getContrasenia())) {
                    s.setSaldo(BigDecimal.valueOf(s.getSaldo().doubleValue() - Double.parseDouble(CampoTotal.getText())));
                    s2.setSaldo(BigDecimal.valueOf(s2.getSaldo().doubleValue() + Double.parseDouble(CampoTotal.getText())));
                    usuarioLnLocal.editar(s);
                    usuarioLnLocal.editar(s2);
                    cs = new Movimiento();
                    if (mll.getList().isEmpty()) {
                        cs.setFolio("1");
                    } else {
                        System.out.println(mll.getList().size());
                        Movimiento nm = mll.getPorId(mll.getList().size());
                        System.out.println(nm);
                        cs.setFolio((nm.getId() + 1) + "");
                    }
                    cs.setDescripcion(Encabezado.getText());
                    Date ad = new Date();
                    cs.setFecha(ad);
                    cs.setHora(ad);
                    cs.setMonto(BigDecimal.valueOf(Double.parseDouble(CampoTotal.getText())));
                    cs.setAutorizo(Autoriza.getId());
                    cs.setIdTipoMovimiento(tipomovimiento);
                    cs.setIdUsuario(s);
                    mll.registrar(cs);
                    int xl = JOptionPane.showConfirmDialog(null, "REGISTRO COMPLETO \n ¿¿desea realizar otra Transferencia??");
                    Cancelar();
                    if (xl != 0) {
                        Cancelar();
                    } else {
                        Transferencia();
                    }
                } else {
                    JOptionPane.showMessageDialog(null, "CONTRASEÑA INCORRECTA");
                }

                break;
        }

    }

    @FXML
    public void Nuevo() {
        try {
            Encabezado.setText("Compra");
            TipoMovimientoLnLocal tmll = new TipoMovimientoLN();
            tipomovimiento = tmll.getPorId(1);
            CampoId.setText("");
            CampoTotal.setEditable(false);
            CampoId.requestFocus();
            Agregar.setVisible(true);
            Internal.setVisible(true);
            botonmenu.setDisable(true);
            cantidadlabel.setVisible(true);
            CampoCantidad.setVisible(true);
            comboProductos.setVisible(true);
            AddProducto.setVisible(true);
            TablaDetalles.setVisible(true);
            eliminar.setDisable(true);
            removeline.setVisible(true);
            listaDVen = new ArrayList<>();
            comboProductos();
            actulizarTablaDetaVenta();
            comboProductos.getSelectionModel().select(p);
            CampoNoControl.requestFocus();

        } catch (Exception f) {
            System.out.println(f);
        }
    }

    @FXML
    public void Transferencia() {
        try {
            Encabezado.setText("Transferencia");
            TipoMovimientoLnLocal tmll = new TipoMovimientoLN();
            tipomovimiento = tmll.getPorId(5);
            Agregar.setVisible(true);
            Internal.setVisible(true);
            botonmenu.setDisable(true);

            name2.setVisible(true);
            transA.setVisible(true);
            nocontrol2.setVisible(true);
            noctrl2.setVisible(true);
            nombre2.setVisible(true);
            saldo2.setVisible(true);
            CampoSaldo2.setVisible(true);
            carrer2.setVisible(true);
            carrera2.setVisible(true);
            CampoTotal.setEditable(true);

            accionLabel.setText("Monto:");
            eliminar.setDisable(true);
            CampoNoControl.requestFocus();

        } catch (Exception f) {
            System.out.println(f);
        }
    }

    @FXML
    public void Recarga() {
        try {
            Encabezado.setText("Abono");
            TipoMovimientoLnLocal tmll = new TipoMovimientoLN();
            tipomovimiento = tmll.getPorId(3);
            CampoId.setText("");
            CampoId.requestFocus();
            Agregar.setVisible(true);
            Internal.setVisible(true);
            botonmenu.setDisable(true);
            eliminar.setDisable(true);
            CampoTotal.setEditable(true);
            CampoNoControl.requestFocus();

        } catch (Exception f) {
            System.out.println(f);
        }

    }

    @FXML
    public void Cancelar() {
        CampoId.setText("");
        Encabezado.setText(null);
        Agregar.setVisible(false);
        Internal.setVisible(false);
        botonmenu.setDisable(false);
        cantidadlabel.setVisible(false);
        CampoCantidad.setVisible(false);
        comboProductos.setVisible(false);
        AddProducto.setVisible(false);
        TablaDetalles.setVisible(false);
        eliminar.setDisable(false);
        InternalAutorizar.setVisible(false);
        name2.setVisible(false);
        transA.setVisible(false);
        nocontrol2.setVisible(false);
        noctrl2.setVisible(false);
        nombre2.setVisible(false);
        saldo2.setVisible(false);
        CampoSaldo2.setVisible(false);
        carrer2.setVisible(false);
        carrera2.setVisible(false);
        InternalAutorizar.setVisible(false);
        CampoNoControl.setText("");
        CampoCantidad.setText("");
        CampoTotal.setText("");
        CampoCarrera.setText("");
        CampoNombre.setText("");
        CampoSaldoFuturo.setText("");
        CampoSaldo.setText("");
        removeline.setVisible(false);
        CampoPass.setText("");
        nocontrol2.setText("");
        nombre2.setText("");
        CampoSaldo2.setText("");
        carrera2.setText("");
        switch (Autoriza.getIdPerfil().getId()) {
            case 1:
                VentanaMovimientos.getScene().getWindow().hide();
                CampoNoControl.setEditable(true);
                break;
            case 4:
                VentanaMovimientos.getScene().getWindow().hide();
                break;
        }


    }

    @FXML
    public void oEliminar() {
        try {
            Movimiento c = (Movimiento) TablaMovimientos.getSelectionModel().getSelectedItem();
            System.out.println(c);
            int x = JOptionPane.showConfirmDialog(null, "¿¿Esta Ud. Seguro que desea ELIMINAR la Movimiento??");
            if (x == 0) {
                MovimientoLnLocal carreraln = new MovimientoLN();
                System.out.println("borrando a " + c);
                carreraln.eliminar(c);
                System.out.println("borrado");
                actualizarLsita();
            }
        } catch (Exception f) {
            System.out.println(f);
        }
    }

    @FXML
    public void buscar() {
        MovimientoLnLocal tipomovln = new MovimientoLN();
        String id;
        id = criterioBusqueda.getText();

        ObservableList<Movimiento> k = FXCollections.observableArrayList();
        for (Movimiento m : tipomovln.getPorPalabra(id)) {
            k.add(m);
        }
        TableColumn ID = new TableColumn("ID");
        ID.setCellValueFactory(
                new PropertyValueFactory<Movimiento, String>("id"));

        TableColumn Nombre = new TableColumn("Folio");
        Nombre.setCellValueFactory(
                new PropertyValueFactory<Movimiento, String>("folio"));
        Nombre.setPrefWidth(200);
        TableColumn Fecha = new TableColumn("Fecha");
        Fecha.setCellValueFactory(
                new PropertyValueFactory<Movimiento, String>("fecha"));
        Fecha.setPrefWidth(200);
        TableColumn Hora = new TableColumn("Hora");
        Hora.setCellValueFactory(
                new PropertyValueFactory<Movimiento, String>("hora"));
        Hora.setPrefWidth(200);
        TableColumn Monto = new TableColumn("Monto");
        Monto.setCellValueFactory(
                new PropertyValueFactory<Movimiento, String>("monto"));
        Monto.setPrefWidth(200);


        TablaMovimientos.setItems(k);
        TablaMovimientos.getColumns().setAll(ID, Fecha, Hora, Monto);


    }

    /**
     * Initializes the controller class.
     */
    @Override
    public void initialize(URL url, ResourceBundle rb) {
        System.out.println(Autoriza.getNoControl() + " " + Autoriza.getNombre());
        switch (Autoriza.getIdPerfil().getId()) {
            case 1:
                Transferencia();
                CampoNoControl.setText(Autoriza.getNoControl());
                CampoNoControl.setEditable(false);
                NoControl();
                break;
            case 4:
                Recarga();
                break;
        }
    }

    private void actulizarTablaDetaVenta() {

        ObservableList<Detallemovimiento> k = FXCollections.observableArrayList();
        for (Detallemovimiento detallemovimiento : listaDVen) {
            k.add(detallemovimiento);
        }
        TableColumn Cantidad = new TableColumn("Cantidad");
        Cantidad.setCellValueFactory(
                new PropertyValueFactory<Movimiento, String>("cantidad"));
        TableColumn Descripcion = new TableColumn("Producto");
        Descripcion.setCellValueFactory(
                new PropertyValueFactory<Movimiento, String>("descripcion"));
        Descripcion.setPrefWidth(100);
        TableColumn precioU = new TableColumn("Precio Unit");
        precioU.setCellValueFactory(
                new PropertyValueFactory<Movimiento, String>("precio"));
        precioU.setPrefWidth(70);
        TableColumn TotalL = new TableColumn("Total");
        TotalL.setCellValueFactory(
                new PropertyValueFactory<Movimiento, String>("totalLinea"));
        TotalL.setPrefWidth(70);


        TablaDetalles.setItems(k);
        TablaDetalles.getColumns().setAll(Cantidad, Descripcion, precioU, TotalL);
    }
}
